<?php namespace system\model;

use hdphp\model\Model;
/*
 * 分类管理模型
 */
class Category extends Model{
    //声明操作数据表
    protected $table = 'category';
    //自动验证
    protected $validate =[
         ['cname','required','分类名称不能为空',3,3],
         ['sort','num:1,9999','分类排序必须为数字',3,3],
    ];
    //添加分类
    public function store(){
        //自动调用自动验证
        if(!$this->create()) return false;
        //p($this->data);exit;
        //add()默认添加data属性里面的东西
        //return $this->add()就是执行添加功能 ，添加成功之后会有一个返回值，是当前这条主键的id
        //from表单单字段要跟数据路保持一致
        return $this->add();
    }
    //处理所属分类
    public  function getCateData($cid){
        //先找出所有的子集
        $cids = $this->getSon($this->get(),$cid);
        //把自己加进去
        $cids[]=$cid;
        //获取除了自己和子集的所有数据
        $data = $this->whereNotIn('cid',$cids)->get();
        return Data::tree($data,'cname');
    }
    //递归找子集
    public function getSon($data,$cid){
        static $temp=[];
        foreach($data as $k => $v){
            if($v['pid']==$cid){
                //说明是$cid的子集
                $temp[]=$v['cid'];
                $this->getSon($data,$v['cid']);
            }
        }
        return $temp;
    }
    //编辑分类
    public function edit(){
        if(!$this->create()) return false;
        //执行save方法进行修改时，需要post发送主键id，from表单字段和数据库保持一致
        return $this->save();

    }

}